1. Technical Field
Embodiments of the present invention are related to the field of electronic devices, and in particular, to shared IO devices.
2. Description of Related Art
A virtual environment is capable of supporting multiple virtual machines (VMs) simultaneously, with each VM running its own guest operating system and guest application software. Each operating system controls and manages a set of virtualized hardware resources, which may include storage resources, and peripheral devices needed to perform input and output (I/O) for the virtual system. Real resources of the host platform in the virtual environment are shared among the VMs, with a layer of virtualizing software, such as a virtual machine monitor (VMM), managing the allocation of, and access to, the hardware resources of the host platform. The virtualizing software controls the real system resources and makes them available to the guest operating systems that alternately execute on the same hardware.
The virtualizing software may include a Virtual Bridge/Switch (VBS), which separates network traffic and forwards it to the appropriate destination. The VBS may be transparent to its communication partners. To achieve “transparency”, the interfaces of the VBS may be configured in a promiscuous mode, which allows the interfaces of the VBS to receive incoming packets destined to any MAC address. The VBS inspects each packet's destination address, and using VBS filters, decides whether a packet should be forward to another interface or dropped. When in the VBS promiscuous mode, each packet is processed in a serialized manner, because the VBS assumes the worst case—that the incoming stream of packets is made up of packets to be forwarded to different VMs.
VBS allows virtual systems to transmit packets to an external network. A packet that is targeted to an external host may be forward to a VBS interface connected to the network adapter. Many network adapters have only single transmit queue. This can be problematic when several virtual systems are sharing the network adapter. For example, if a virtual system transmits a packet, its transmission may have to wait for previously queued transmit packets generated by other virtual systems to drain from the single transmit queue of the network adapter. This is commonly referred to as “head of line blocking”.